# -*- coding: utf-8 -*-
import scrapy
import re

class DoubanSpiderSpider(scrapy.Spider):
    name = 'hanyu_spider'
    # allowed_domains = ['movie.douban.com']
    # start_urls = ['http://lab.scrapyd.cn/page/1/']
    start_urls = ['https://hanyu.baidu.com/s?wd=阔别&from=zici']

    # def start_requests(self):  # 由此方法通过下面链接爬取页面
    #
    #     # 定义爬取的链接
    #     urls = [
    #         'http://lab.scrapyd.cn/page/1/',
    #         'http://lab.scrapyd.cn/page/2/',
    #     ]
    #     for url in urls:
    #         yield scrapy.Request(url=url, callback=self.parse)  # 爬取到的页面如何处理？提交给parse方法处理

    def parse(self, response):
        '''
        start_requests已经爬取到页面，那如何提取我们想要的内容呢？那就可以在这个方法里面定义。
        这里的话，并木有定义，只是简单的把页面做了一个保存，并没有涉及提取我们想要的数据，后面会慢慢说到
        也就是用xpath、正则、或是css进行相应提取，这个例子就是让你看看scrapy运行的流程：
        1、定义链接；
        2、通过链接爬取（下载）页面；
        3、定义规则，然后提取数据；
        就是这么个流程，似不似很简单呀？
        '''
        print("response\n")
        # 词
        word = response.xpath('.//div[@id="pinyin"]/h2/strong/text()').extract_first()
        # 近义词
        synonym = response.xpath('//div[@id="synonym"]/div//text()').extract()
        synonym = self._clean_data(synonym)
        # 反义词
        antonym = response.xpath('//div[@id="antonym"]/div//text()').extract()
        antonym = self._clean_data(antonym)
        # 翻译
        fanyi = response.xpath('//div[@id="fanyi-wrapper"]/div//text()').extract()
        fanyi = self._clean_data(fanyi)
        # 推荐热词
        recommd = response.xpath('//div[@id="recmd-panel"]//ul//text()').extract()
        recommd = self._clean_data(recommd)
        print(word)
        print(synonym)
        print(antonym)
        print(fanyi)
        print(recommd)

    def _clean_data(self,data):
        return list(filter(lambda x: x.replace("\n", '').strip() != '' or x.strip() != '', data))